HashSet的三個問題
HashSet的三個問題
-
為什麼HashSet的存取順序不同?
- HashSet的遍歷與你存取的順序沒有相關
- 黃色的球一定是你第一個存的嗎?不一定
- HashSet的遍歷與你存取的順序沒有相關
-
HashSet為什麼沒有索引?
- 第一個位置有一個鍊表,這代表這串鍊表都是index = 1
- 用索引會有問題所以不用索引
-
HashSet怎麼保證數據唯一?
- 通過HashCode計算存儲位置
- 再用equals方法比較屬性值是否相同
-
-
- JDK8之前:數組+鍊表
- JDK8之後:數組+鍊表+紅黑樹
- 2.通過hashCode方法計算存儲在數組上的位置,再用equals方法來比較是否重複
- 3.因為遍歷的方法是按著數組走,你不能確定你第一個元素一定會第一個被遍歷到
- 4.因為有可能一個位置下有一串鍊表,整串鍊表都代表同一個位置,用索引會有問題
- 5.用equals方法來保證唯一性
-